#ifndef __CAPAINDICES_SECUENCIAL_H
#define __CAPAINDICES_SECUENCIAL_H

/*****************************************************************************
*                     Organizacion de Datos - 75.06                          *
*                         Catedra Lic. Servetto                              *
*            Facultad de Ingenieria - Universidad de Buenos Aires            *
******************************************************************************/

#include "../Comun/Archivo.h"
#include "Indices.h"

using namespace std;
using namespace Comun;

namespace CapaIndices
{

	/// Indice que solo implementa la busqueda en forma secuencial.
	class Secuencial : public IIndice
	{
		public:
		
		/// Constructor
		/// @param metadatosIndice Metadatos necesarios para crear el indice.
		Secuencial(MetadatosIndice* metadatosIndice);
		
		/// Destructor
		~Secuencial();;
		
		/// Crea un nuevo indice a partir de la metadata suministrada.
		/// @return true si la creacion fue exitosa, sino false.
		bool Crear();
		
		/// Inserta 'clave' en el inidce.
		/// @param clave La clave a insertar.
		void InsertarClave(Clave* clave);
		
		/// Busca el registro representado por 'clave' y le asigna sus campos.
		/// @param clave La clave a buscar.
		void BuscarClave(Clave* clave);
		
		/// Elimina el registro representado por 'clave'.
		/// @param clave La clave a eliminar.
		void EliminarClave(Clave* clave);
		
		/// Actualiza los cambios producidos al registro representado por 'clave'.
		/// @param clave La clave a actualizar.
		void ActualizarClave(Clave* clave);
		
		private:
		
		IArchivo* archivoDatos;
		
	};

}

#endif
